#pragma once
#ifndef _KLAS_GL_SHADER_HPP_
#define _KLAS_GL_SHADER_HPP_

#include "../Shader.hpp"
#include "../../GLLibs.hpp"

namespace klas
{
  namespace graphics
  {
    namespace gl
    {
      class GLShader: public Shader, public library::Gl
      {
      public:
        //! Creates a GLShader from a file, and also takes an eShaderType describing what type of shader it is (FRAGMENT_SHADER or VERTEX_SHADER)
        GLShader(string file, eShaderType shaderType);
        virtual ~GLShader();
        virtual bool create(string file, eShaderType shaderType);
        virtual bool destroy();

        GLuint getShaderID() const {return m_shaderID;}
      private:

        GLuint m_shaderID;   //!< The ID of the shader.
        GLenum m_shaderType; //!< The type of shader.  Either GL_VERTEX_SHADER or GL_FRAGMENT_SHADER
      };
    }
  }
}

#endif